    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import controladores.GestionHabitacionCont;
import tools.Utilidad;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.apache.log4j.Logger;
import org.primefaces.component.datatable.DataTable;

/**
 *
 * @author ricardo
 */
@ManagedBean
@ViewScoped
public class Habitacion implements Serializable {

    private modelos.pojos.Habitacion habitacion;
    
    private Date fechaDe;
    private Date fechaHasta;
    private DataTable tablaHabitaciones;
    private Boolean noPermitirEdicion = true;
    protected Logger log = Logger.getLogger(Habitacion.class);

    /** Creates a new instance of Cliente */
    public Habitacion() {
        habitacion = new modelos.pojos.Habitacion();
    }

    public modelos.pojos.Habitacion getHabitacion() {
        return habitacion;
    }

    public DataTable getTablaHabitaciones() {
        return tablaHabitaciones;
    }

    public void setTablaHabitaciones(DataTable tablaHabitaciones) {
        this.tablaHabitaciones = tablaHabitaciones;
    }

    public void setHabitacion(modelos.pojos.Habitacion habitacion) {
        this.habitacion = habitacion;
    }
    
    public Boolean getNoPermitirEdicion() {
        return noPermitirEdicion;
    }

    public void setNoPermitirEdicion(Boolean noPermitirEdicion) {
        this.noPermitirEdicion = noPermitirEdicion;

    }

    public Date getFechaDe() {
        return fechaDe;
    }

    public void setFechaDe(Date fechaDe) {
        this.fechaDe = fechaDe;
    }

    public Date getFechaHasta() {
        return fechaHasta;
    }

    public void setFechaHasta(Date fechaHasta) {
        this.fechaHasta = fechaHasta;
    }

    public void desbloquear() {
        this.noPermitirEdicion = false;
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Campos Habilitados", "Ahora puede modificar la información"));
    }
    
    public List<modelos.pojos.Habitacion> listarHabitaciones(){
        return GestionHabitacionCont.listarHabitaciones("");
    }

    public List<modelos.pojos.Habitacion> listarHabitacionesDisponibles(){
        return GestionHabitacionCont.listarHabitacionesDisponibles("");
    }
    public List<modelos.pojos.Habitacion> listarHabitacionesDisponiblesPorRango(){
        return GestionHabitacionCont.listarHabitacionesDisponiblesPorRango("",fechaDe, fechaHasta);
    }
    
    public void crearHabitacion() {
        String mensaje = GestionHabitacionCont.crearHabitacion(habitacion);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Habitación creada:", mensaje));
    }
    
    public void consultarHabitacion(){
        modelos.pojos.Habitacion seleccion = (modelos.pojos.Habitacion) tablaHabitaciones.getRowData();
        habitacion = GestionHabitacionCont.buscarHabitacion(seleccion.getNumero());
    }

    public void actualizarHabitacion() {
        String mensaje = GestionHabitacionCont.actualizarInformacion(habitacion);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Habitación actualizada:", mensaje));
        noPermitirEdicion = true;
    }
    
    public void desactivarHabitacion(){
        modelos.pojos.Habitacion seleccion = (modelos.pojos.Habitacion) tablaHabitaciones.getRowData();
        habitacion = GestionHabitacionCont.buscarHabitacion(seleccion.getNumero());
        habitacion.setEstado(Utilidad.invertirEstado(habitacion.getEstado()));
        GestionHabitacionCont.actualizarInformacion(habitacion);
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("Éxito en la operación"));
    }
    
}
